package com.liuf.di.service;

import com.github.pagehelper.PageInfo;
import com.liuf.di.api.ServiceException;
import org.pentaho.di.core.Result;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.repository.Repository;

import java.util.Map;

/**
 * @program: spring-cloud-liuf-master
 * @description: 任务业务管理
 * @author: Mr.Liu
 * @create: 2018-09-20 08:56
 * @码云： https://gitee.com/www.jiandan.com
 **/
public interface IJobService {

    /**
     * 获取Job任务集合
     * @param params    查询参数[分页参数和查询参数]
     * @return  PageInfo
     * @throws ServiceException 统一异常处理
     */
    PageInfo findJob(Map<String,Object> params) throws ServiceException;

    /**
     * 获取单一任务
     * @param id    主键
     * @return  Map
     * @throws ServiceException 统一异常处理
     */
    Map<String,Object> getJob(long id) throws ServiceException;

    /**
     * 加载作业
     * @param jobname   作业名称
     * @param directory 作业路径（ObjectId）
     * @return  作业meta
     * @throws ServiceException 统一异常处理
     */
    JobMeta loadJob(String jobname, long directory,Repository repository)throws ServiceException;

    /**
     * 删除作业，不级连删除
     * @param id    主键
     * @throws ServiceException 统一异常处理类
     */
    void delJob(long id)throws ServiceException;

    /**
     * 手动执行kettle作业
     * @param jobMeta   作业
     * @throws KettleException  kettle异常
     */
    Result jobExecution(String jobname, long id) throws ServiceException;
}
